前言

在开发 Android NDK 的时候,如果你是用 ndk-build 的方式,当在 Java 文件定义完 native 接口,按 ALT + ENTER 并不支持自动生成 cpp 文件,而手写 cpp 又非常容易写错,所以很有必要借助 javah 自动生成 .h 头文件。然而敲打 javah 命令也不是这么简单(设置 classpath,设置输出路径 等等。。。)

配置

在强大的 Android Studio 中 setting 中可以添加一些 extend tool 方便开发,今天就说下怎么配置 javah 和 ndk-build ,实现一键生成 .h 头文件,一键编译 so 库

setting 中选择 extend tool

Snipaste_2018-03-16_17-34-47.png
Snipaste_2018-03-16_17-34-47.png

javah 配置

Snipaste_2018-03-16_17-35-56.png
Snipaste_2018-03-16_17-35-56.png

  • Program : $JDKPath$\bin\javah.exe 这里配置的是 javah.exe 的路径(基本一致)
    $JDKPath$ 可以从右侧按钮(insert macro)中选择
  • Parametes : $FileClass$ 这里指的是要编译 .h 文件的 java 类 (注意这里只填写了 FileClass ,其他参数没有导入那么自定义的一些 model ,或者 Android.jar 中的类是不支持的,可以先生成 h 然后手动输入特殊的参数。 比如 Bitmap ,在 native 方法中先不传这个参数,当生成 h 文件后,手动添加一个 jobject 的参数)
  • Working : $ModuleFileDir$\src\main\java 工作路径,也是 .h 生成的路径

ndk-build 配置

Snipaste_2018-03-16_17-36-10.png
Snipaste_2018-03-16_17-36-10.png

  • Program : C:\Users\xxx\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd 这里配置的是 ndk 下的 ndk-build.cmd 的路径,在你本地的 ndk-bundle 下
  • Parametes : 这里不需要参数
  • Working : $ModuleFileDir$\src\main 工作路径

测试

Javah : 选中要生成 .h 的文件,右键 -> javah 就会看到有.h文件生成
Snipaste_2018-03-16_17-46-19.png

ndk-build : 选中 jni 文件夹,然后点击 右键 -> ndk-build 会在 main 下生成一个 obj 目录,里面会生成 libxxx.so
Snipaste_2018-03-16_17-47-19.png